#pragma once

#include <VxUtilLib/VxDefs.h>
#include <string>
//! these actions are same as touch actions in java
enum E_TOUCH_ACTION_TYPES
{
	E_TOUCH_ACTION_DOWN		= 0,
	E_TOUCH_ACTION_UP		= 1,
	E_TOUCH_ACTION_MOVE		= 2,
	E_TOUCH_ACTION_CANCEL	= 3
};
enum EGameAssetType
{
	eGameAssetTypeNone			= 0,	// no asset or invalid asset type
	eGameAssetTypeGeneric		= 1,	// asset is in root directory of assets
	eGameAssetTypeSound			= 2,	// 
	eGameAssetTypeMesh			= 3,	//  
	eGameAssetTypeTexture		= 4,	//  
	eGameAssetTypeMaterial		= 5,	// asset is a graphics material
	eGameAssetTypeShader		= 6,	// 
	eGameAssetTypeScript		= 7,	// 
	eGameAssetTypeGui			= 8,
	eGameAssetTypeScene			= 9,
	eGameAssetTypeLevel			= 10,
	eGameAssetTypeCampaign		= 11,
	eGameAssetTypeSave			= 12,	// saved data or config of some sort
	eGameAssetTypeCollide		= 13,
	eGameAssetTypeAI			= 14,

	eMaxGameAssetType, // must be last
};

extern U32			g_u32SysTimeSec;		// unix time stamp.. seconds since jan 1, 1970
extern U32			g_u32ElapsedTimeMs;		// elapsed time ( app alive time ) milliseconds
extern U64			g_u64SysTimeMs;			// system time in milliseconds
extern U64			g_u64StartupTimeMs;		// unix time in milliseconds of first update ( application start )



//! Update system time
void	UpdateSystemTime( void );

//! set root path game assets are located at
void				SetGameAssetPath( const char * pFileName );
//! get root path game assets are located at
std::string			GetGameAssetPath( void );
//! get path to shader files
std::string			GetShaderFilesPath( void );

//! append asset file name and path together and return path + filename 
irr::core::stringc	GetAssetPathAndName( const char * pFileName, EGameAssetType eAssetType = eGameAssetTypeGeneric );

void				SetEnableGLES2( bool enabled );
bool				IsGLES2Enabled( void );